const app = getApp()
const api = require('../../utils/request')

Page({
  /**
   * 页面的初始数据
   */
  data: {
    userInfo: {},
    healthInfo: {
      height: '',      // 身高(cm)
      weight: '',      // 体重(kg)
      bmi: '',         // BMI值
      waistline: '',   // 腰围(cm)
      bloodType: '',   // 血型
      diabetesType: 0, // 糖尿病类型: 0-无, 1-1型, 2-2型, 3-妊娠, 4-其他
      diagnosisYear: '', // 确诊年份
      riskLevel: 0     // 风险等级: 0-低风险, 1-中风险, 2-高风险
    },
    medicalHistory: {
      hasDiabetes: false,       // 是否患有糖尿病
      hasHypertension: false,   // 是否患有高血压
      hasHeartDisease: false,   // 是否患有心脏病
      hasKidneyDisease: false,  // 是否患有肾病
      familyDiabetes: false,    // 家族是否有糖尿病史
      medications: []           // 当前服用的药物列表
    },
    bloodTypes: ['A型', 'B型', 'AB型', 'O型'],
    diabetesTypes: ['无', '1型糖尿病', '2型糖尿病', '妊娠糖尿病', '其他类型'],
    riskLevels: ['低风险', '中风险', '高风险'],
    years: [],  // 年份选择器数据
    loading: true
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.initYears()
    this.fetchUserData()
  },

  /**
   * 初始化年份选择器数据
   */
  initYears() {
    // 生成年份选择器数据，从1950年到当前年份
    const currentYear = new Date().getFullYear()
    const years = []
    for (let i = currentYear; i >= 1950; i--) {
      years.push(i.toString())
    }
    this.setData({ years })
  },

  /**
   * 获取用户数据
   */
  async fetchUserData() {
    try {
      this.setData({ loading: true })
      
      // 获取用户基本信息
      const userInfoRes = await api.getUserProfile()
      if (userInfoRes.success) {
        this.setData({ userInfo: userInfoRes.data })
        
        // 处理健康信息
        const healthInfo = {
          height: userInfoRes.data.height || '',
          weight: '', // 将通过健康API获取
          bmi: '',
          waistline: '',
          bloodType: '',
          diabetesType: userInfoRes.data.diabetesType ? this.getDiabetesTypeValue(userInfoRes.data.diabetesType) : 0,
          diagnosisYear: userInfoRes.data.diagnosisDate ? new Date(userInfoRes.data.diagnosisDate).getFullYear().toString() : '',
          riskLevel: 0
        }
        
        this.setData({ healthInfo })
      }
      
      // 尝试获取更多健康信息（如果API可用）
      try {
        if (api.healthTarget && api.healthTarget.getUserHealthInfo) {
          const healthInfoRes = await api.healthTarget.getUserHealthInfo()
          if (healthInfoRes.success && healthInfoRes.data) {
            const updatedHealthInfo = { ...this.data.healthInfo, ...healthInfoRes.data }
            
            // 计算BMI
            if (updatedHealthInfo.height && updatedHealthInfo.weight) {
              const heightInMeters = updatedHealthInfo.height / 100
              updatedHealthInfo.bmi = (updatedHealthInfo.weight / (heightInMeters * heightInMeters)).toFixed(1)
            }
            
            this.setData({ healthInfo: updatedHealthInfo })
          }
        }
      } catch (err) {
        console.log('获取额外健康信息失败，使用基本信息', err)
      }
      
      // 尝试获取病史信息（如果API可用）
      try {
        if (api.medicalHistory && api.medicalHistory.getUserMedicalHistory) {
          const medicalHistoryRes = await api.medicalHistory.getUserMedicalHistory()
          if (medicalHistoryRes.success && medicalHistoryRes.data) {
            this.setData({ medicalHistory: medicalHistoryRes.data })
          }
        }
      } catch (err) {
        console.log('获取病史信息失败', err)
      }
    } catch (err) {
      console.error('获取用户数据失败:', err)
      wx.showToast({
        title: '获取数据失败',
        icon: 'none'
      })
    } finally {
      this.setData({ loading: false })
    }
  },

  /**
   * 将糖尿病类型字符串转换为数值
   */
  getDiabetesTypeValue(typeString) {
    switch (typeString) {
      case '1型': return 1
      case '2型': return 2
      case '妊娠期': return 3
      case '其他': return 4
      default: return 0
    }
  },

  /**
   * 跳转到编辑页面
   */
  goToEdit() {
    wx.navigateTo({
      url: '/pages/userDetailEdit/userDetailEdit?edit=true'
    })
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {
    return {
      title: '糖尿病健康管理',
      path: '/pages/health/health'
    }
  }
}) 